﻿#ifndef			_LIBINI_HEADER_H_
#define			_LIBINI_HEADER_H_

#if defined(_WIN32)
#define			_LIBINI_SYSTEM_WINDOWS
#endif
#if defined (__linux__) || defined (_LINUX_)
#define			_LIBINI_SYSTEM_LINUX
#endif
#if defined (__APPLE__)
#define			_LIBINI_SYSTEM_MACOS
#endif
#if defined (__ANDROID__) || defined (ANDROID)
#define			_LIBINI_SYSTEM_ANDROID
#define			_LIBINI_SYSTEM_LINUX
#define 		_LIBINI_SYSTEM_ARM
#endif
#if defined (__arm__) || defined (__ARM_ARCH)
#define			_LIBINI_SYSTEM_LINUX
#define 		_LIBINI_SYSTEM_ARM
#endif


#include <iostream>
#include <vector>
#include <fstream>
#include <functional>
#include <map>
#include <list>
#include <string>


#ifndef				_LIBINI_BUILD_STATIC
#ifdef				_LIBINI_BUILD_SHARED
#if defined(_LIBINI_SYSTEM_WINDOWS)
#define				LIBINI_EXPORT					__declspec(dllexport)
#else
#define				LIBINI_EXPORT					__attribute__((visibility("default")))
#endif
#else
#if defined(_LIBINI_SYSTEM_WINDOWS)
#define				LIBINI_EXPORT					__declspec(dllimport)
#else
#define				LIBINI_EXPORT					__attribute__((visibility("default")))
#endif
#endif
#else
#define				LIBINI_EXPORT
#endif


// Newline encoding of INI configuration file
#define				LIBINI_NEWLINE_STRING				"\r\n"
#define				LIBINI_EXPLAIN_CHAR				';'
#define 			LIBINI_SECTION_BEGIN				'['
#define 			LIBINI_SECTION_END				']'
#define 			LIBINI_KEY_DIVISION				'='


#endif
